#ifndef CUSTOMER_HH
#define CUSTOMER_HH

#include <string>
#include <vector>
#include <memory>
#include "Account.hh"

using namespace std;

class Customer : public std::enable_shared_from_this<Customer>{
private:
    string name;  // 仅记录客户姓名
    vector<Account*> accounts;  // 客户拥有的账户列表
    std::vector<std::shared_ptr<Transaction>> transactions;
    string owner;
public:
    // 构造函数：通过名字创建客户，并自动创建储蓄账户和支票账户
    Customer(const string& name);  
    ~Customer();  // 析构函数：释放客户持有的账户资源

    string getName() const;  // 获取客户名字
    vector<Account*> getAccounts() const;  // 获取客户所有账户

    void addAccount(Account* account);  // 添加账户
    void showAccounts() const;  // 展示所有账户信息
    Account* findAccountByID(const string& id) const;  // 根据账户ID查找账户
    void showAccounts();

    // 新增：通过名字查找客户
    static Customer* findCustomerByName(const vector<shared_ptr<Customer>>& customers, const string& name);
};

#endif
